import axios from 'axios'


//更新订单状态
export function updateOrderStatus(id, status) {
  return axios.put(`/api/orders/${id}/status?status=${status}`)
}

// 创建订单
export function createOrder(data) {
  return axios.post('/api/orders/create', data)
}

// 根据ID获取订单
export function getOrderById(id) {
  return axios.get(`/api/orders/${id}`)
}

// 根据ID获取订单 (兼容旧API)
export function getOrder(id) {
  return axios.get(`/api/orders/${id}`)
}

// 根据订单号获取订单
export function getOrderByNo(orderNo) {
  return axios.get(`/api/orders/no/${orderNo}`)
}

// 支付订单
export function payOrder(id, paymentMethod) {
  return axios.post(`/api/orders/${id}/pay?paymentMethod=${paymentMethod}`)
}

// 接受订单（商家端）
export function acceptOrder(id, merchantId) {
  return axios.post(`/api/orders/${id}/accept`, { merchantId })
}

// 确认订单（商家端）
export function confirmOrder(id, merchantId) {
  return axios.post(`/api/orders/${id}/confirm`, { merchantId })
}

// 开始配送（商家端）
export function deliverOrder(id, merchantId) {
  return axios.post(`/api/orders/${id}/deliver`, { merchantId })
}

// 完成订单（商家端）
export function completeOrderByMerchant(id, merchantId) {
  return axios.post(`/api/orders/${id}/complete`, { merchantId })
}

// 确认收货（用户端）
export function completeOrder(id, userId) {
  return axios.post(`/api/orders/${id}/complete`, { userId })
}

// 取消订单
export function cancelOrder(id, cancelReason, operatorId) {
  return axios.post(`/api/orders/${id}/cancel`, { cancelReason, operatorId })
}

// 删除订单
export function deleteOrder(id) {
  return axios.delete(`/api/orders/${id}`)
}

// 获取用户订单列表
export function getUserOrders(userId, page = 1, size = 10, status = null) {
  return axios.get(`/api/orders/user/${userId}`, { 
    params: { 
      page,
      size,
      status: status !== null ? status : undefined
    } 
  })
}

// 获取商家订单列表
export function getMerchantOrders(merchantId, params) {
  return axios.get(`/api/orders/merchant/${merchantId}`, { params })
}

// 获取所有订单列表（管理员专用）
export function getAllOrders(params) {
  return axios.get('/api/orders/admin', { params })
}

// 根据状态获取订单列表
export function getOrdersByStatus(status) {
  return axios.get(`/api/orders/status/${status}`)
}

// 检查订单是否可以取消
export function checkOrderCanCancel(id) {
  return axios.get(`/api/orders/${id}/can-cancel`)
}

// 检查订单是否可以退款
export function checkOrderCanRefund(id) {
  return axios.get(`/api/orders/${id}/can-refund`)
}

// 获取订单统计数据
export function getOrderStats(params) {
  return axios.get('/api/orders/stats', { params })
}

// 格式化日期时间工具函数
const formatDateTime = (dateStr) => {
  if (!dateStr) return undefined;
  // 返回原始日期格式，不添加时间部分
  return dateStr;
};

// 获取商家订单统计数据
export function getMerchantOrderStats(merchantId, startDate, endDate) {
  return axios.get('/api/orders/stats', { 
    params: { 
      merchantId,
      startDate: formatDateTime(startDate),
      endDate: formatDateTime(endDate)
    } 
  })
}

// 获取时间范围内的订单数量
export function getOrderCountByTimeRange(startTime, endTime, status) {
  return axios.get('/api/orders/count/time-range', {
    params: {
      startTime: formatDateTime(startTime),
      endTime: formatDateTime(endTime),
      status
    }
  })
}

// 获取时间范围内的销售额
export function getSalesAmountByTimeRange(startTime, endTime, status) {
  return axios.get('/api/orders/sales/time-range', {
    params: {
      startTime: formatDateTime(startTime),
      endTime: formatDateTime(endTime),
      status
    }
  })
}

// 获取商家在时间范围内的订单数量
export function getMerchantOrderCountByTimeRange(merchantId, startTime, endTime, status) {
  return axios.get(`/api/orders/count/merchant/${merchantId}/time-range`, {
    params: {
      startTime: formatDateTime(startTime),
      endTime: formatDateTime(endTime),
      status
    }
  })
}

// 获取商家在时间范围内的销售额
export function getMerchantSalesAmountByTimeRange(merchantId, startTime, endTime, status) {
  return axios.get(`/api/orders/sales/merchant/${merchantId}/time-range`, {
    params: {
      startTime: formatDateTime(startTime),
      endTime: formatDateTime(endTime),
      status
    }
  })
}

// 生成订单号
export function generateOrderNo() {
  return axios.get('/api/orders/generate-no')
} 